{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "#导入工具包\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import pickle\n",
    "from sklearn.cluster import MiniBatchKMeans\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn import metrics\n",
    "from sklearn.decomposition import PCA\n",
    "import time\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(13418, 102)"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#读取数据\n",
    "X_train = pd.read_csv('./data/week4_test_data.csv')\n",
    "X_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>event_id</th>\n",
       "      <th>c_1</th>\n",
       "      <th>c_2</th>\n",
       "      <th>c_3</th>\n",
       "      <th>c_4</th>\n",
       "      <th>c_5</th>\n",
       "      <th>c_6</th>\n",
       "      <th>c_7</th>\n",
       "      <th>c_8</th>\n",
       "      <th>c_9</th>\n",
       "      <th>...</th>\n",
       "      <th>c_92</th>\n",
       "      <th>c_93</th>\n",
       "      <th>c_94</th>\n",
       "      <th>c_95</th>\n",
       "      <th>c_96</th>\n",
       "      <th>c_97</th>\n",
       "      <th>c_98</th>\n",
       "      <th>c_99</th>\n",
       "      <th>c_100</th>\n",
       "      <th>c_other</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3513514173</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1425177328</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1481265243</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3984507010</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2221155670</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>89</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 102 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     event_id  c_1  c_2  c_3  c_4  c_5  c_6  c_7  c_8  c_9   ...     c_92  \\\n",
       "0  3513514173    0    0    0    0    0    0    1    0    0   ...        0   \n",
       "1  1425177328    0    0    0    0    0    0    0    0    0   ...        0   \n",
       "2  1481265243    0    0    0    0    0    0    0    1    0   ...        0   \n",
       "3  3984507010    0    0    0    0    0    1    0    0    0   ...        0   \n",
       "4  2221155670    1    1    0    0    0    6    0    0    1   ...        0   \n",
       "\n",
       "   c_93  c_94  c_95  c_96  c_97  c_98  c_99  c_100  c_other  \n",
       "0     0     0     0     0     0     0     0      0        5  \n",
       "1     0     0     0     0     0     0     0      0        2  \n",
       "2     0     0     0     0     0     0     0      0       13  \n",
       "3     0     0     0     0     0     0     0      0       19  \n",
       "4     0     0     0     0     0     0     0      0       89  \n",
       "\n",
       "[5 rows x 102 columns]"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:2026: FutureWarning: From version 0.21, test_size will always complement train_size unless both are specified.\n",
      "  FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(10734, 102)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#数据分割\n",
    "X_train_part, X_val = train_test_split(X_train,train_size = 0.8,random_state = 666)\n",
    "X_train_part.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 一个参数点（聚类数据为K）的模型，在校验集上评价聚类算法性能\n",
    "def K_cluster_analysis(K, X_train, X_val):\n",
    "    start = time.time()\n",
    "    \n",
    "    print(\"K-means begin with clusters: {}\".format(K));\n",
    "    \n",
    "    mb_kmeans = MiniBatchKMeans(n_clusters = K)\n",
    "    mb_kmeans.fit(X_train)\n",
    "    \n",
    "    CH_score = metrics.silhouette_score(X_val,mb_kmeans.predict(X_val))\n",
    "    \n",
    "    end = time.time()\n",
    "    print(\"CH_score: {}, time elaps:{}\".format(CH_score, int(end-start)))\n",
    "    \n",
    "    return CH_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K-means begin with clusters: 10\n",
      "CH_score: 0.5453235239815059, time elaps:0\n",
      "K-means begin with clusters: 15\n",
      "CH_score: 0.5284603856840939, time elaps:0\n",
      "K-means begin with clusters: 20\n",
      "CH_score: 0.5315133951270408, time elaps:1\n",
      "K-means begin with clusters: 25\n",
      "CH_score: 0.5378930653882044, time elaps:1\n",
      "K-means begin with clusters: 30\n",
      "CH_score: 0.5258963575428902, time elaps:1\n",
      "K-means begin with clusters: 35\n",
      "CH_score: 0.5153885498694945, time elaps:0\n",
      "K-means begin with clusters: 40\n",
      "CH_score: 0.5192956507008974, time elaps:1\n",
      "K-means begin with clusters: 45\n",
      "CH_score: 0.5028062944946035, time elaps:0\n",
      "K-means begin with clusters: 50\n",
      "CH_score: 0.5203525795180434, time elaps:1\n",
      "K-means begin with clusters: 55\n",
      "CH_score: 0.5179491643332204, time elaps:1\n",
      "K-means begin with clusters: 60\n",
      "CH_score: 0.5160907487569109, time elaps:1\n",
      "K-means begin with clusters: 65\n",
      "CH_score: 0.514903022173687, time elaps:1\n",
      "K-means begin with clusters: 70\n",
      "CH_score: 0.5153679491417196, time elaps:1\n",
      "K-means begin with clusters: 75\n",
      "CH_score: 0.5074402156524129, time elaps:1\n",
      "K-means begin with clusters: 80\n",
      "CH_score: 0.5142202551781926, time elaps:1\n",
      "K-means begin with clusters: 85\n",
      "CH_score: 0.5133672533194567, time elaps:1\n",
      "K-means begin with clusters: 90\n",
      "CH_score: 0.5096799192565333, time elaps:1\n",
      "K-means begin with clusters: 95\n",
      "CH_score: 0.5209704971897254, time elaps:1\n",
      "K-means begin with clusters: 100\n",
      "CH_score: 0.5082114949815636, time elaps:1\n"
     ]
    }
   ],
   "source": [
    "#不同K值得到的CH_scores\n",
    "Ks=range(10,105,5)\n",
    "CH_scores = []\n",
    "for K in Ks:\n",
    "    ch = K_cluster_analysis(K,X_train_part,X_val)\n",
    "    CH_scores.append(ch)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x4e94db0>]"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(Ks,CH_scores)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
